package rail;

import java.util.ArrayList;
import java.util.Random;

import reseau.ReseauFerre;
import semaphore.Semaphore;
import jonctions.Butee;
import jonctions.Jonction;
import capteur.Capteur;

public class Rail {
	private int longueur;
	private int idRail;
	/*
	 * pour rail d'aiguillage, on definie listCaptRail.get(0) et
	 * listSemaphoreRail.get(0) sont le capteur et la semaphore pour aiguillage
	 */
	private ArrayList<Capteur> listCaptRail =  new ArrayList<Capteur>();
	private ArrayList<Semaphore> listSemaphoreRail= new ArrayList<Semaphore>();;
	private Jonction jonction1=new Butee(-1);
	private Jonction jonction2=new Butee(-1);
	
	public Rail(){
		//this.listSemaphoreRail = new ArrayList<Semaphore>();
	}
	

	public Rail(int id){
		//this.listSemaphoreRail = new ArrayList<Semaphore>();
		this.setIdRail(id);
		Random r = new Random();
		this.longueur=ReseauFerre.MINTAILLERAIL+ r.nextInt(ReseauFerre.MAXTAILLERAIL - ReseauFerre.MINTAILLERAIL);
	}
	
	public Rail(int longueur,int id){
		this.setIdRail(id);
		this.longueur=longueur;
	}
	
	public Rail(int id, Capteur c, Semaphore s){
		this.setIdRail(id);
		this.listCaptRail.add(c);
		this.listSemaphoreRail.add(s);
		/* Par definition, les capteurs sont sur les derniers tron�ons du rail car les jonctions y sont. */
		c.setPositionCapt(longueur);
		s.setPositionSema(longueur);
		s.setSenseRail(false);
	

	}

	public ArrayList<Semaphore> getListSemaphoreRail() {
		return listSemaphoreRail;
	}
	
	public int getLongueur() {
		return longueur;
	}

	public void setLongueur(int longueur) {
		this.longueur = longueur;
	}

	public ArrayList<Capteur> getListCaptRail() {
		return listCaptRail;
	}

	public Jonction getJonction1() {
		return jonction1;
	}

	public void setJonction1(Jonction jonction1) {
		this.jonction1 = jonction1;
	}

	public Jonction getJonction2() {
		return jonction2;
	}

	public void setJonction2(Jonction jonction2) {
		this.jonction2 = jonction2;
	}

	public int getIdRail() {
		return idRail;
	}

	public void setIdRail(int idRail) {
		this.idRail = idRail;
	}


	
}
